package com.partsoft.dits.mq;

import org.apache.commons.pool.KeyedObjectPool;

/**
 * MQ池提供器
 */
public interface MQPoolProvider {

	/**
	 * 获得MQ池
	 * @param desc
	 * @return
	 * @throws RuntimeException 如果找不到则抛出异常
	 */
	KeyedObjectPool getMQPool(MQPoolDescriptor desc) throws RuntimeException;

	/**
	 * 获得MQ池
	 * @param hostName 主机名（null或者为空表示本地绑定）
	 * @param port 端口
	 * @param channelName 通道名称
	 * @param qmName 默认队列管理器名称
	 * @return 对象连接池
	 * @throws RuntimeException 如果找不到则抛出异常
	 */
	KeyedObjectPool getMQPool(String hostName, int port, String channelName, String qmName) throws RuntimeException;
	
	/**
	 * 获得MQ池
	 * @param id
	 * @return
	 * @throws RuntimeException 如果找不到则抛出异常
	 */
	KeyedObjectPool getMQPool(String id) throws RuntimeException;
	
	/**
	 * 判断是否有此MQ池
	 * @param desc
	 * @return
	 */
	boolean hasMQPool(MQPoolDescriptor desc);
	
	
	/**
	 * 判断是否有此MQ池
	 * @param hostName 主机名（null或者为空表示本地绑定）
	 * @param port 端口
	 * @param channelName 通道名称
	 * @param qmName 默认队列管理器名称
	 * @return
	 */
	boolean hasMQPool(String hostName, int port, String channelName, String qmName);
	
	/**
	 * 判断是否有此MQ池
	 * @param id
	 * @return
	 */
	boolean hasMQPool(String id);
	
}
